import axios from 'axios'
import { useAuthStore } from "@/stores"

import route from '@/router/index'
import { ElMessage } from 'element-plus'
import { baseUrl } from '@/configs/config'

const http = axios.create({
    baseURL: baseUrl,
    timeout: 30000,
    headers: {
        'X-Api-Version': 'v6'
    }

})

// 添加请求拦截器
http.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    const authStore = useAuthStore()
    if (authStore.token) {
        config.headers.Authorization = "Bearer " + authStore.token
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
http.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
}, function (error) {
    // 对响应错误做点什么
    if (error.response?.status === 401) {
        //console.log(error)
        //router.push('/login')
        // 错误的默认情况 => 只要给提示
        if(error.config.url === "/api/me" && error.config.method === 'post')
        {
            ElMessage.error('邮箱或者密码错误')
        }
        else
        {
            toLogin()
        }

    }

    return Promise.reject(error);
});

const toLogin = async ()=>{
    await route.push('/login')
}


export default http